<span ng-switch on="getType(key, val, child)">
	<json ng-switch-when="Object" child="val" type="Object" default-collapsed="defaultCollapsed"></json>
	<json ng-switch-when="Array" child="val" type="Array" default-collapsed="defaultCollapsed"></json>
	<json ng-switch-when="List" child="val" type="List" default-collapsed="defaultCollapsed"></json>

	<span ng-switch-when="Boolean">
		<input type="checkbox" ng-model="val" ng-model-onblur ng-change="changeValue(val, key, child, $parent)" ng-if="isConfig(key, child)" ng-disabled="isKey(key, child)">
		<span class="val" ng-if="!isConfig(key, child)">{{ val }}</span>
	</span>
	<span ng-switch-when="Enumeration">
		<select ng-model="val" ng-model-onblur ng-change="changeValue(val, key, child, $parent)" ng-if="isConfig(key, child)" ng-disabled="isKey(key, child)" ng-options="option for option in getEnumValues(key, child, $parent) track by option"></select>
		<span class="val" ng-if="!isConfig(key, child)">{{ val }}</span>
	</span>
	<span ng-switch-when="Number">
		<input type="number" ng-model="val" ng-model-onblur ng-change="changeValue(val, key, child, $parent)" ng-if="isConfig(key, child)" ng-disabled="isKey(key, child)">
		<span class="val" ng-if="!isConfig(key, child)">{{ val }}</span>
	</span>
	<span ng-switch-default class="jsonLiteral">
		<input type="text" ng-model="val" placeholder="Empty" ng-model-onblur ng-change="changeValue(val, key, child, $parent)"  ng-if="isConfig(key, child)" ng-disabled="isKey(key, child)">
		<span class="val" ng-if="!isConfig(key, child)">{{ val }}</span>
	</span>

	<!--<add-item ng-show="jsonEditable && !val.length"></add-item>-->
</span>